ADCs are used to convert an analog signal to a digitally coded signal. ADCs span a spectrum of designs which can, with the appropriate circuitry, range from a successive approximation type that generally requires one clock cycle per bit of resolution on one end of the spectrum, to parallel flash types, employing multiple comparators, that generally require one clock cycle for all bits of resolution conversion at the other end of the spectrum.
Flash analog-to-digital converters include comparators, each of which receives a representation of the analog input signal and a predetermined reference voltage. The comaparator outputs ideally collectively form a "thermometer code" with all outputs below a particular output being of one state, and all outputs above the particular output being of another state. The transition from one state in the ideal thermometer code to another state is decoded to generate an output that is a digital representation corresponding to the analog input signal to the converter.
Comparators employed in such converters may be subject to offset errors, noise spikes, or stuck-at-particular-state faults, resulting in a thermometer code with more than one transition from one state to another. Multiple transitions from one state to another in a thermometer code is commonly referred to as bubbles in a thermometer code. Having bubbles in the thermometer code results in multiple apparent transitions, and conversion of the thernometer code to a single, unique, digital representation of the applied analog input signal becomes impossible.
A simple majority gate technique has been used to correct errors in thermometer codes that were not ideal. In the simple majority gate technique, an odd number of bits in the thermometer code, typically centered at the bit being evaluated, are considered in determining whether a bit is correct or incorrect. For example, to determine whether a particular bit is correct using a three input majority gate technique, that bit as well as the bit above and the bit below in the thermometer code are considered. The state of two out of three bits constitutes a majority. Thus, if two of the three bits, which are inputs to a majority gate circuit are logic one, then the correct output state for the particular bit is also a logic one. Correspondingly, if two of the three inputs are logic zero, then the correct output state for the particular bit is a zero.
While the simple majority gate technique corrects for some errors, and generally the accuracy of the correction is improved by considering an increased number of bits, there remain some thermometer code errors that are not properly corrected by simple majority gate techniques. What is needed is a technique to correct for broken thermometer codes that provides better performance than a simple majority gate technique.